
# grxiv - Просмотрщик изображений на Qt и OpenGL

**grxiv** (Grannik X Image Viewer)— это простой и эффективный просмотрщик изображений, написанный на C++ с использованием библиотек Qt и OpenGL. Программа позволяет просматривать изображения в заданной директории или отдельный файл, поддерживает масштабирование с помощью колеса мыши и навигацию по изображениям с помощью клавиш. Проект оптимизирован для работы на Linux (в частности, протестирован на Ubuntu 22.04) и использует OpenGL для рендеринга изображений.

## Основные возможности

- **Просмотр изображений**:
 Поддержка форматов `.jpg`, `.jpeg`, `.png`, `.bmp`, `.gif`.
- **Навигация**:
 Переключение между изображениями в директории с помощью клавиш `←` (предыдущее) и `→` (следующее).
- **Масштабирование**:
 Увеличение и уменьшение изображения с помощью колеса мыши (масштаб от 0.1x до 10x).
- **Быстрое закрытие**:
 Нажмите `Q` для выхода из программы.
- **Лёгкая установка**:
 Простая сборка с использованием `qmake` и `make`.

## Требования

Для сборки и запуска `grxiv` необходимы следующие зависимости:

- **Qt 5** (рекомендуется версия 5.15 или выше)
- **OpenGL** (версия 2.1 или выше, поддерживается Mesa)
- **Компилятор C++** (g++ или другой, совместимый с C++11)
- **Система сборки**: `qmake` и `make`
- **Операционная система**: Linux (протестировано на Ubuntu 22.04)

## Установка зависимостей

Для Ubuntu выполните следующую команду, чтобы установить необходимые пакеты:

```bash
sudo apt-get install qt5-default libqt5opengl5-dev build-essential
```

Проверьте наличие Qt:
```bash
qmake --version
```

Проверьте поддержку OpenGL:
```bash
glxinfo | grep "OpenGL version"
```

## Сборка проекта

1. Склонируйте репозиторий или скопируйте файлы проекта в локальную директорию:
   ```bash
   git clone <URL_репозитория>
   cd grxiv
   ```

2. Очистите проект от старых сборочных файлов (если они есть):
   ```bash
   make clean
   ```

3. Сгенерируйте `Makefile` с помощью `qmake`:
   ```bash
   qmake grxiv.pro
   ```

4. Соберите проект:
   ```bash
   make
   ```

После успешной сборки в директории появится исполняемый файл `grxiv`.

## Установка в систему (опционально)

Чтобы запускать `grxiv` из любой директории, скопируйте исполняемый файл в
```bash
sudo cp grxiv /usr/local/bin/
```

## Использование

Запустите программу, указав путь к изображению или директории с изображениями:
```bash
./grxiv /path/to/the/image.jpg
```

Или для директории:
```bash
./grxiv /path/to/the/directory/
```

### Управление

- **Навигация**:
  - `←` — предыдущее изображение.
  - `→` — следующее изображение.
- **Масштабирование**:
  - Прокрутите колесо мыши вверх для увеличения.
  - Прокрутите колесо мыши вниз для уменьшения.
- **Закрытие**:
  - Нажмите `Q` для выхода.

## Отладочная информация

При запуске программа выводит в консоль полезную информацию, такую как:
- Версия OpenGL и GLSL.
- Статус загрузки изображений (например, путь и размер).
- Состояние OpenGL-контекста и текстур.

Пример вывода:
```
OpenGL version: 4.6 (Compatibility Profile) Mesa 23.2.1
GLSL version: 4.60
Shaders initialized successfully
Loading image: "/home/user/Pictures/MyPictures/image.jpg"
Image loaded successfully. Size: QSize(768, 768)
Context active: true
Texture updated
```

## Структура проекта

- **`grxiv.cpp`**: Основной исходный код программы, реализующий логику просмотра изображений.
- **`grxiv.pro`**: Файл проекта для `qmake`, содержащий настройки сборки.
- **`grxiv.moc`**: Сгенерированный файл для поддержки механизма сигналов и слотов Qt.

## Возможные проблемы и их решение

1. **Ошибка: `QOpenGLTexture::setData() requires a valid current context`**
   Убедитесь, что OpenGL-контекст инициализирован корректно. Текущая версия кода решает эту проблему, загружая изображения после инициализации OpenGL.

2. **Изображения не отображаются**
   - Проверьте, что указанный путь к файлу или директории корректен.
   - Убедитесь, что изображения имеют поддерживаемый формат (`.jpg`, `.png`, и т.д.).
   - Добавьте отладочный вывод в метод `paintGL` для проверки рендеринга.

3. **Ошибки компиляции**
   Убедитесь, что все зависимости установлены:
   ```bash
   sudo apt-get install qt5-default libqt5opengl5-dev
   ```

## Лицензия
 Проект распространяется под лицензией MIT.

## Автор:
 Grannik

## Контакты:
- **My site** [Granni](https://grannik.neocities.org/)

## Репозитории
- **Codeberg**:     [grxiv](https://codeberg.org/Grannik/grxiv)
- **GitHub**:       [grxiv](https://github.com/Grannik/grxiv)
- **GitLab**:       [grxiv](https://gitlab.com/grannik/grxiv)
- **SourceForge**:  [grxiv](https://sourceforge.net/projects/grxiv/)
- **NotABug**:      
- **Gitea (Demo)**: 
- **Gogs (Demo)**:  
